package gov.mogaha.ntis.cmm.mob.view;

import gov.mogaha.ntis.cmm.mob.R;
import gov.mogaha.ntis.cmm.mob.util.DisPlayMetricsManager;
import android.content.Context;
import android.text.Editable;
import android.text.InputFilter;
import android.text.InputType;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class EditTextView extends LinearLayout{

	private final Context mContext;
	private ImageView mImgClear;
	private EditText mEditText;
	
	public EditTextView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
		mContext = context;
		init();
	}

	public EditTextView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		mContext = context;
		init();
	}


	private void init(){
		LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		FrameLayout layout = (FrameLayout) inflater.inflate(R.layout.edittextview, null);
		layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
		mEditText = (EditText)layout.findViewById(R.id.edt_input);
		mImgClear = (ImageView)layout.findViewById(R.id.img_clear);
		mEditText.addTextChangedListener(new TextWatcher() {
			
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {
				// TODO Auto-generated method stub
		
				if(s.length() > 0){
					mImgClear.setVisibility(View.VISIBLE);
				} else{
					mImgClear.setVisibility(View.GONE);
				}
			}
			
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void afterTextChanged(Editable s) {
				// TODO Auto-generated method stub
				
			}
		});
		
		mImgClear.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				mEditText.setText("");
			}
		});


		String str = (String)getTag();
		
		if(str!=null){
			mEditText.setHint(str);
		}
		
		
		int paddingLeft = DisPlayMetricsManager.getPixel(4);
		int paddingRight = DisPlayMetricsManager.getPixel(4);
		int paddingTop = DisPlayMetricsManager.getPixel(2);
		int paddingBottom = DisPlayMetricsManager.getPixel(2);
		

		setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
		addView(layout);
	}
	
	
	public String getText(){
		return mEditText.getText().toString();
	}
	
	
	public void setText(String str){
		mEditText.setText(str);
	}
	
	public EditText getEditText(){
		return mEditText;
	}
	
	
	
	
	//텍스트박스의 길이 구하기
	/**<B><I>public int length()</B></I><BR>
	 * 텍스트박스에 들어온 값의 글자수를 리턴함.
	 * @return 글자수
	 * @author 이전봉
	 */
	public int length() {
		if (mEditText != null)
			return mEditText.length();
		else return 0;
	}
	
	//힌트 설정
	/**<B><I>public void setHint(String hint)</B></I><BR>
	 * 텍스트박스에 들어갈 힌트를 설정함.
	 * @param hint 설정할 문구
	 * @author 이전봉
	 */
	public void setHint(String hint) {
		mEditText.setHint(hint);
	}
	
	//텍스트 필터 설정
	/**<B><I>public void setFilters({@link InputFilter} filters[])</B></I><BR>
	 * 텍스트박스에 텍스트필터를 설정함.
	 * @param filters InputFilter의 배열 개체
	 * @author 이전봉
	 */
	public void setFilters(InputFilter[] filters) {
		mEditText.setFilters(filters);
	}
	
	
	
	//텍스트박스 활성화, 비활성화 설정
	/**<B><I>public void setReadOnly(boolean readOnly)</B></I><BR>
	 * 텍스트박스의 활성화, 비활성화 여부를 설정한다.
	 * @param readOnly 활성화 여부
	 * @author 이전봉
	 */
	public void setReadOnly(boolean readOnly) {
		if (readOnly) {
			mEditText.setEnabled(false);
			mEditText.setBackgroundResource(R.drawable.widget_box_disabled);
		} else {
			mEditText.setEnabled(true);
			mEditText.setBackgroundResource(R.drawable.widget_box);
		}
	}
	
	
	
	/**<B><I>public void setNumberOnly(boolean numberOnly)</B></I><BR>
	 * 텍스트박스의 입력방식을 숫자로 제한할 수 있다.
	 * @param numberOnly 숫자 입력방식 여부
	 * @author 이전봉
	 */
	public void setNumberOnly(boolean numberOnly) {
		if (numberOnly) {
			mEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
		} else {
			mEditText.setInputType(InputType.TYPE_CLASS_TEXT);
		}
	}
	
	
	
	/**<B><I>public void setSingleLine(boolean singleLine)</B></I><BR>
	 * 텍스트박스의 SingleLine 속성을 설정할 수 있다.
	 * @param singleLine SingleLine 여부
	 * @author 이전봉
	 */
	public void setSingleLine(boolean singleLine) {
		if (singleLine) {
			mEditText.setSingleLine(true);
		} else {
			mEditText.setSingleLine(false);
		}
	}
}

















